It has long been the goal of the computer arts to create compelling visual images through computer graphics. While these visual images may represent real or imaginary things, they still require that certain aspects be presented with high realism. This requirement is especially true for optics. Humans rely on light to perceive the world around them. Variations in light due to various optical interactions are decoded by our brains into information about the nature, position shape and relationship between objects in the world. For this reason, any representation in computer graphics whether realistic or fantastic requires a certain amount of optical realism in order to be properly evaluated by the human brain.
Since we live in and perceive a three dimensional world, three dimensional computer graphics are usually more compelling. Three dimensional images may be simulated on a two dimensional screen by using various “tricks” known in the visual arts. In addition, “true” three dimensional images may also be displayed by providing two slightly different images to the viewer's eyes. Regardless of how the third dimension is realized, accurate and realistic optical effects are desirable for creating three-dimensional images.
It has also been the goal of the computer arts to create dynamic or real time computer generated graphics. That is, to create images that changes in real time, preferably because of user input. Such graphics can be used in a variety of applications, such as, computer games, flight simulators, driving simulators, and the related training applications, virtual reality software, etc. Dynamic graphics usually require that a computer calculate the nature and positions of various objects and determine how to graphically represent these objects in real time. As a result, dynamic graphics require a considerable amount of processing power. To address this, preprocessing is often used.
Preprocessing refers to performing various processing actions for creating an image, at a time prior to the time when the image is to be created and when more processing resources are available. However, not all processing actions required for creating an image are possible at the preprocessing stage. In dynamic environments, some information about the placement of objects or the lighting may not be known until the time when the image is to be created. Therefore, the actions to be performed during preprocessing should be carefully selected as to use the limited information available at this stage in order to ease the processing requirements when the image is being drawn.
Environments that include a plurality of light sources are especially difficult to simulate in computer graphics. That may be the case because the combined effect of multiple light sources on particular surface depends on many factors, including the location of the surface, the orientation of the surface, and the location and intensity of each light source. Furthermore, these relationships may not be easily simplified. For example, it may be difficult to combine the effects of the multiple light sources into a single representative light source, which can be used for all surfaces, because the combined effects of multiple light sources differ greatly depending on the spatial relationship between the surface and the light sources.
Many computer graphic systems render models in an environment. Models may include moving objects, such as, for example, cars, airplanes, persons, animals, and monsters. Rendering of models poses additional difficulties. Models are often moving in a manner that may only be known at run time. Thus, for example, the movement of models in a computer game or a computer simulation depends on the actions of the user of the game or simulation and is computed in real time or near real time based on these actions. On the other hand, models often tend to catch a user's attention and thus are often rendered with a higher degree of accuracy.